<?php
namespace App\Common\Cla\Com\Upload\Config\Sid;

use App\Common as com;

abstract class BaseAbs extends com\Cla\ClaBase {
	
	/**
	 * 获取配置->前配置（会被新配置覆盖）
	 * @return array 配置数组
	 */
	abstract public function getConfigBefore( array $config = [] );
	 
	/**
	 * 获取配置->后配置（覆盖新配置）
	 * @return array 配置数组
	 */
	abstract public function getConfigLater( array $config = [] );
	
	/**
	 * 配置重写
	 * @param array $config 原配置
	 * @param string $sid 需要应用的新
	 * @return array 新配置
	 */
	public function mergeConfig( array $config = [] ){
		$new_config = $config;
		// 覆盖配置->前
		$config_before = $this->getConfigBefore( $config );
		$new_config = com\Lib\Fun\Array_::arrayMerges( $config_before, $new_config );
		// 覆盖配置->后
		$config_later = $this->getConfigLater( $config );
		$new_config = com\Lib\Fun\Array_::arrayMerges( $new_config, $config_later );
		//
		return $new_config;
	}
}
